/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatec.controlecal;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.Vector;
import javax.microedition.rms.RecordEnumeration;

/**
 *
 * @author gilberto
 */
public class Alimento {
    
    private int id;
    private int idCategoria;
    private String nome;
    private String medida;
    private String peso;
    private int calorias;
    
    public final int POR_CATEGORIA = -1;
    public final int POR_ALIMENTO = -2;
    public final int POR_TODOS = -3;

    public boolean gravar(Conexao conexao,int id) {
        boolean resultado = false;
        try {
            conexao.abrirStore();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            dos.writeInt(id);
            dos.writeInt(getIdCategoria());
            dos.writeUTF(getNome());
            dos.writeUTF(getMedida());
            dos.writeUTF(getPeso());
            dos.writeInt(getCalorias());
            
            
            byte bytes[] = baos.toByteArray();
            conexao.getStore().addRecord(bytes, 0, bytes.length);
            conexao.fecharStore();
           
            resultado = true;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return resultado;
    }
    public boolean alterar(Conexao conexao) {
        boolean resultado = false;
        try {
            conexao.abrirStore();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            dos.writeInt(id);
            dos.writeInt(getIdCategoria());
            dos.writeUTF(getNome());
            dos.writeUTF(getMedida());
            dos.writeUTF(getPeso());
            dos.writeInt(getCalorias());
            
            
            byte bytes[] = baos.toByteArray();
            conexao.getStore().setRecord(id, bytes, 0, bytes.length);
            conexao.fecharStore();
           
            resultado = true;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return resultado;
    }
    
    public int getAutoIncrement(Conexao conexão){
        int total = 0;
        try {
            conexão.abrirStore();  
            RecordEnumeration re = conexão.getStore().enumerateRecords(null, null, false);
            while(re.hasNextElement()){
                int id = re.nextRecordId();                
                byte bytes[] = conexão.getStore().getRecord(id);
                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
                DataInputStream dis = new DataInputStream(bais);
                total = dis.readInt();
            }
            conexão.fecharStore();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
        return ++total;
    }
    
    public Vector getAlimentos(Conexao conexão,int caso,int identificador){
        
        Vector alimento = new Vector();
        try{
            conexão.abrirStore();            
            //alimento = new Alimento[conexão.getStore().getNumRecords()];
            int i=0;
            RecordEnumeration re = conexão.getStore().enumerateRecords(null, null, false);
            while(re.hasNextElement()){
                int id = re.nextRecordId();
                System.out.println(id);
                Alimento ali = new Alimento();
                
                byte bytes[] = conexão.getStore().getRecord(id);
                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
                DataInputStream dis = new DataInputStream(bais);
                ali.setId(dis.readInt());
                ali.setIdCategoria(dis.readInt());
                ali.setNome(dis.readUTF());
                ali.setMedida(dis.readUTF());
                ali.setPeso(dis.readUTF());
                ali.setCalorias(dis.readInt());
                
                if(caso == POR_CATEGORIA){
                    if(ali.getIdCategoria() == identificador){
                        alimento.addElement(ali);
                    }
                }else if(caso == POR_ALIMENTO){
                    if(ali.getId() == identificador){
                        alimento.addElement(ali);
                    }
                }else if(caso == POR_TODOS){
                    alimento.addElement(ali);
                }
            }
            conexão.fecharStore();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return alimento;
    }

    
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the idCategoria
     */
    public int getIdCategoria() {
        return idCategoria;
    }

    /**
     * @param idCategoria the idCategoria to set
     */
    public void setIdCategoria(int idCategoria) {
        this.idCategoria = idCategoria;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the medida
     */
    public String getMedida() {
        return medida;
    }

    /**
     * @param medida the medida to set
     */
    public void setMedida(String medida) {
        this.medida = medida;
    }

    /**
     * @return the peso
     */
    public String getPeso() {
        return peso;
    }

    /**
     * @param peso the peso to set
     */
    public void setPeso(String peso) {
        this.peso = peso;
    }

    /**
     * @return the calorias
     */
    public int getCalorias() {
        return calorias;
    }

    /**
     * @param calorias the calorias to set
     */
    public void setCalorias(int calorias) {
        this.calorias = calorias;
    }
}
